/*
 * 楼盘基本信息
 * @author 狮子
 * @time 2018/9/19
 * @since 1.0.0
 * */
// React基础组件
import React from 'react'
// dva 连接组件 - 连接route和model
import { connect } from 'dva'
// 引入antd的组件
import { Form,Modal} from 'antd'
//导入路由组件，用于跳转等
import { Link, hashHistory } from 'dva/router'
// 导入项目全局配置文件
import config from 'config/config'

// 引入model取值工具方法
import { mapStateToProps } from 'utils/view_utils'
// 当前组件样式
import styles from './premisesStyle.less'
//引用listPage
import ListPage from 'widget/PageTmpl/ListPage'
import cx from 'classnames'
const confirm = Modal.confirm;
import FlagBtn from 'widget/FlagBtn/FlagView'
/**
 * description 路由视图及事件处理
 * dispatch 分发到models中的effects对应事件名
 * model 用于获取models中state定义的数据
 * form 表单对象
 */

const RouteView = function({dispatch, model, form}) {
  // 表单的子函数
  const {resetFields, getFieldDecorator, validateFields, setFieldsValue} = form
  // 取出model对象，命名空间
  const { modelObj, namespace } = model

  // modelObj.xxx获取model中状态机的值
  const { areaList,biz}  = modelObj
  // 详情页跳转
  function detailSkip(type, productId) {

    hashHistory.push({
        pathname: '/home/buildingAdmin/premisesDetail',
        query: { actionType: type, productId }
    });

  }
  function showDeleteConfirm(id) {
    console.log(id)
    confirm({
      title: '您确定删除吗?',
      content: '删除后不可恢复',
      okText: '确定',
      okType: 'danger',
      cancelText: '取消',
      onOk() {
       
        dispatch({
          type: `${namespace}/delPremise`,
          payload: { productId: id }
        });
      },
      onCancel() {
        console.log('Cancel');
      },
    });
  }
  // 分页表格属性配置
  let pageProps = {
    // ---------- 界面部分 ----------
    "ui": {
      // 页面接口地址
      "api_url": "admin/building/list",
      // 接口方式
      "method": "POST",
      headers:{
        "Content-type":"application/json"
      },
      "app": "",
      // 接口参数
      "params": "",
      // 模拟数据 - 用于开发需要，若填充了上面的api_url之后，请将此项设置为null
      // "mockData": mockData,
      "mockData": null,
      // 查询栏
      "search_bar": {
        "fields": [
          {
            en_name: 'province',
            zh_name: '城市',
            elem_type: 'Cascader',
            elem_valid_type: 'string',
            cmpt_items: areaList,
            split_keys: ['province', 'city'],
            //关联的更改的搜索字段
            related_key: 'parentProductId',
            //请求地址
            related_req_url: 'admin/estate/list',
            //默认请求
            related_req_param: {
              pageNo: 1,
              pageSize: 1000
            }
          },
          {
            en_name: 'estateName',
            zh_name: '项目名称',
            elem_type: 'Input',
            elem_valid_type: 'string',
          },
        ],
        searchHandler: (e) => { // 自定义搜索按钮回调函数，点击搜索时触发
          console.log('search click',e)
        },
        resetHandler: () => { // 自定义重置按钮回调函数，点击重置时触发
          console.log('reset click')
        },
        searchCallback: params => { // 自定义搜索完成后的后调函数, 搜索完成后触发, 并将本次搜索的参数传入
          console.log('search finish', params)
        },
        pasteTargetList: [  // 列表组件中将输入框的en_name作为默认id(也可以通过id另外设置)
          'carName',  // 将需要粘贴事件拦截的输入框id以数组的形式传入, 该参数对应PasteFromClipboard组件的targetList参数
        ]
      },
      // 数据表格
      "table":
        {
          status_params: "status=0",
          status_text: "全部",
          // 表头字段列表
          scroll: { x: 1200 },
          fields: [
            // {
            //   en_name: "key",
            //   zh_name: "序号",
            //   width: "60",
            //   render: (a, item, index, d, e, f) => {
            //     return (
            //       <span>{index + 1}</span>
            //     )
            //   },
            // },
            {
              en_name: "seat",
              zh_name: "楼栋号",
            },
            {
              en_name: "estateName",
              zh_name: "项目名称",
              render:(a, item, index, d, e, f)=>{
                return item.estateName.replace("美的", "")
                
              }
            },
            {
              en_name: "cityName",
              zh_name: "所属城市",
              width:150,
              render:(a, item, index, d, e, f)=>{
                //console.log(item)
                let arr = ['北京市','重庆','上海','天津']
                if(arr.indexOf(item.provinceName)>-1){
                  return item.cityName
                }else{
                  return `${item.provinceName||''}${item.provinceName&&item.cityName&&' - '||''}${item.cityName||''}`
                }
                
              }
            },
            {
              en_name: "region",
              zh_name: "所属分期",
              render:(a,item)=>{
                if(item.region==='0区'){
                  return (
                      <span>{item.estateName}</span>
                  )
                }else{
                  return a
                }
              },
              width:100,
            },
            {
              en_name: "createPerson",
              zh_name: "创建人",
              width:100,
            },
            {
              en_name: "createTime",
              zh_name: "创建时间",
              width:180
            },
            {
              en_name: "updatePerson",
              zh_name: "更新人",
              width:100,
            },
            {
              en_name: "updateTime",
              zh_name: "更新时间",
              width:180
            },
            {
              en_name: "edit",
              zh_name: "操作",
              width:170,
              fixed: "right",
              render: (a, item, index, d, e, f) => {
                return (
                    <span>
                         <FlagBtn  node={<a onClick={() => detailSkip('check', item.productId)}>查看<span className="ant-divider" /></a>} btnId={'10202'}></FlagBtn>
                <FlagBtn  node={<a onClick={() => detailSkip('edit', item.productId)}>编辑<span className="ant-divider" /></a>} btnId={'10203'}> </FlagBtn>
                <FlagBtn  node={<a onClick={() => showDeleteConfirm(item.productId)} >删除</a>} btnId={'10204'}> </FlagBtn>
                    </span>
                )
              },
            },
          ]
        },
        
        action_bar:[{
        label:'新建楼栋',
        type:'primary',
        btnId:'10201',
        onClick:(e,row)=>{
          detailSkip("add")
        }
      }],
      
    },
  }
  if (!!modelObj.biz) {
    pageProps.biz = modelObj.biz
    pageProps.biz.syncBackCbf = (biz) => {
      //console.log(biz)
      dispatch({
        type: `${namespace}/updateStore`,
        payload: { biz }
      })
    }
  }
  return (
    <div className={cx('pageLayout')}>
      <ListPage pageProps={pageProps}/>
    </div>
  )
}

// 连接视图(view)和模型(model)
export default connect(mapStateToProps)(Form.create()(RouteView))
